package sunsun.xiaoli.jiarebang.utils;

import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 * GsonUtil
 * <p>
 * Created by Mr.w on 2018/9/19.
 * <p>
 * 版本      ${version}
 * <p>
 * 修改时间
 * <p>
 * 修改内容
 */

public class GsonUtil {
    public static Gson getSkipIdAndGroupIdGson() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉包含"",""的字段
                        return f.getName().equals("isVisible") | f.getName().equals("match_list") | f.getName().equals("singleBonus") | f.getName().equals("_desc");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGson(String excludeKey) {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals(excludeKey);
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGsonForHewFishbowl() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals("b") | f.getName().equals("g") | f.getName().equals("m") | f.getName().equals("r") | f.getName().equals("w")
                                | f.getName().equals("h")
                                | f.getName().equals("d0")
                                | f.getName().equals("d1");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGsonForAQ806() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals("b")
                                | f.getName().equals("g")
                                | f.getName().equals("m")
                                | f.getName().equals("r")
                                | f.getName().equals("w")
                                | f.getName().equals("en")
                                | f.getName().equals("st")
                                | f.getName().equals("et")
                                | f.getName().equals("h")
                                | f.getName().equals("d0")
                                | f.getName().equals("d1");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGsonForAQ610() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals("b")
                                | f.getName().equals("g")
                                | f.getName().equals("m")
                                | f.getName().equals("r")
                                | f.getName().equals("w")
                                | f.getName().equals("st")
                                | f.getName().equals("et")
                                | f.getName().equals("h")
                                | f.getName().equals("d0")
                                | f.getName().equals("d1");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGsonForPlantWallWatering() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals("b")
                                | f.getName().equals("g")
                                | f.getName().equals("m")
                                | f.getName().equals("r")
                                | f.getName().equals("w")
                                | f.getName().equals("st")
                                | f.getName().equals("et")
                                | f.getName().equals("h0")
                                | f.getName().equals("h1")
                                | f.getName().equals("m0")
                                | f.getName().equals("m1");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }

    public static Gson getSkipIdAndGroupIdGsonForPondTeamPeriod() {
        Gson gson = new GsonBuilder().setExclusionStrategies(
                new ExclusionStrategy() {
                    @Override
                    public boolean shouldSkipField(FieldAttributes f) {
                        //过滤掉字段
                        return f.getName().equals("en") |
                                f.getName().equals("h0") |
                                f.getName().equals("h1") |
                                f.getName().equals("s0") |
                                f.getName().equals("s1") |
                                f.getName().equals("m0") |
                                f.getName().equals("m1") | f.getName().equals("h")
                                | f.getName().equals("d0")
                                | f.getName().equals("d1");
                    }

                    @Override
                    public boolean shouldSkipClass(Class<?> clazz) {
                        // 过滤掉 类名包含 Bean的类
                        return false;
                    }
                }).create();
        return gson;
    }
}
